package day02.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/**
 * @ClassName Test1
 * @Description TODO
 * @Author xinghaiyang
 * @Date 2023/3/17 19:43
 * @Version 1.0
 *
 * 完成一个简易记事本工具
 * 程序启动后,将用户在控制台上书写的每一句字符串都写出到note.txt文件中
 * 当用户单独输入exit时,程序退出
 *
 * 思路:
 * 用到的类FileOutputStream Scanner
 * 1:首先创建一个文件输出流,指定的文件为note.txt,目的是通过这个流向文件中写出数据
 * 2:循环进行如下操作
 * ①首先获取用户在控制台上输入的每一行字符串(Scanner的nextLine()方法)
 * ②判断字符串是否为exit,如果是则退出程序
 * ③如果不是exit,则将字符串写出到文件中
 **/
public class Test1 {
    public static void main(String[] args) throws IOException {
        //创建一个文件输出流
        FileOutputStream fos = new FileOutputStream("note.txt",true);
        //键盘扫描器对象
        Scanner sc = new Scanner(System.in);
        while (true){
            //提示用户输入内容
            System.out.println("请输入内容:");
            //接收用户输入的内容
            String line = sc.nextLine();
            /*PS:1.如果一个变量和直接量equals时,一定要用直接量.equals变量
            * 因为变量有可能是null值,这样就会出现空指针异常,
            * 所以为了避免空指针,用直接量.equals变量,
            * 一个好的开发风格很重要
            * 2.equalsIgnoreCase()这个方法是忽略大小写,一般在验证码的时候用,
            * 注意应用场景,如果是密码时,则应该用equals()方法,因为密码区分大小写,
            * 本身是增加密码的安全性,不能忽略大小写
            * */
            if("exit".equalsIgnoreCase(line)){
                break;
            }
            //将用户输入的字符串转换为一组字节
            byte[] data = line.getBytes();
            //将这组字节写出到文件中
            fos.write(data);
        }
        System.out.println("写出完毕,再见!");
        fos.close();
    }
}
